package com.baidu.health.controller;

import com.baidu.health.pojo.TbConsult;
import com.baidu.health.pojo.TbFaq;
import com.baidu.health.pojo.TbFeedback;
import com.baidu.health.pojo.resVo.ResultResponse;
import com.baidu.health.pojo.resVo.resFaqListVo;
import com.baidu.health.pojo.resVo.resFaqVo;
import com.baidu.health.service.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@Api(tags = "客服中心")
@RestController
@RequestMapping("/customer")
public class CustomerController {

    //  常见问题
    @Autowired
    TbFaqServiceImpl faqService;

    //  用户反馈
    @Autowired
    TbFeedbackServiceImpl feedbackService;

    //  人工客服
    @Autowired
    TbServiceServiceImpl serviceService;

    //  用户咨询记录表
    @Autowired
    TbConsultServiceImpl consultService;

    /**
     * 同步常见问题解答
     * @throws Exception 异常
     */
    @PostMapping("/syncFaq")
    public void syncFaq() throws Exception{
        faqService.syncFaq();
    }

    /**
     * 获得全部常见问题
     * @param pageNum  页面num
     * @param pageSize 页面大小
     * @return {@link resFaqVo}
     * @throws Exception 异常
     */
    @ApiOperation("获得全部常见问题")
    @PostMapping("/getFaqLists/{pageNum}/{pageSize}")
    public resFaqListVo getFaqLists(@PathVariable("pageNum")Integer pageNum,@PathVariable("pageSize")Integer pageSize) throws Exception{
        return faqService.getFaqLists(pageNum,pageSize);
    }

    /**
     * 获得常见问题列表
     * @return {@link resFaqVo}
     * @throws Exception 异常
     */
    @ApiOperation("获取常见问题")
    @PostMapping("/getFaqList")
    public resFaqVo getFaqList() throws Exception{
        return faqService.getFaqList();
    }

    /**
     * 添加常见问题解答
     * @param faq 常见问题解答
     * @return {@link resFaqVo}
     * @throws Exception 异常
     */
    @ApiOperation("新增常见问题")
    @PostMapping("/addFaq")
    public resFaqVo addFaq(@RequestBody TbFaq faq) throws Exception {
        return faqService.addFaq(faq);
    }

    /**
     * 删除常见问题解答
     * @param faq 常见问题解答
     * @return {@link resFaqVo}
     */
    @ApiOperation("删除常见问题")
    @PostMapping("/deleteFaq")
    public resFaqVo deleteFaq(@RequestBody TbFaq faq)throws Exception{
        return faqService.deleteFaq(faq);
    }

    /**
     * 更新常见问题解答
     * @param faq 常见问题解答
     * @return {@link resFaqVo}
     */
    @ApiOperation("更新常见问题")
    @PostMapping("/updateFaq")
    public resFaqVo updateFaq(@RequestBody TbFaq faq)throws Exception{
        return faqService.updateFaq(faq);
    }

    /**
     * 用户反馈
     * @param feedback 反馈
     * @return {@link resFaqVo}
     */
    @ApiOperation("用户反馈")
    @PostMapping("/userFeedback")
    public resFaqVo userFeedback(@RequestBody TbFeedback feedback){
        return feedbackService.userFeedback(feedback);
    }

    /**
     * 问题答案
     * @param qq qq
     * @return {@link List}<{@link String}>
     * @throws Exception 异常
     */
    @ApiOperation("问题答案")
    @PostMapping("/questionAnswer")
    public List<String> questionAnswer(@RequestBody TbConsult tbConsult)throws Exception{
        return faqService.questionAnswer(tbConsult);
    }

    /**
     * 得到反馈列表
     * @param pageNum  页面num
     * @param pageSize 页面大小
     * @return {@link resFaqListVo}
     */
    @ApiOperation("得到反馈列表")
    @PostMapping("/getFeedbackList/{pageNum}/{pageSize}")
    public resFaqListVo getFeedbackList(@PathVariable("pageNum")Integer pageNum,@PathVariable("pageSize")Integer pageSize){
        return feedbackService.getFeedbackList(pageNum,pageSize);
    }

    /**
     * 改变反馈状态
     * @param feedback 反馈
     * @return {@link resFaqVo}
     */
    @ApiOperation("改变反馈状态")
    @PostMapping("/changesFeedbackStatus")
    public resFaqVo changesFeedbackStatus(@RequestBody TbFeedback feedback){
        return feedbackService.changesFeedbackStatus(feedback);
    }

    /**
     * 更新问题数据
     * @param faq 常见问题解答
     * @return {@link resFaqVo}
     */
    @ApiOperation("更新问题数据")
    @PostMapping("/updateQuestions")
    public resFaqVo updateQuestions(@RequestBody TbFaq faq)throws Exception{
        return faqService.updateQuestions(faq);
    }

    /**
     * 得到咨询列表
     * @param pageNum  页面num
     * @param pageSize 页面大小
     * @return {@link resFaqListVo}
     */
    @PostMapping("/getConsultList/{pageNum}/{pageSize}")
    public resFaqListVo getConsultList(@PathVariable("pageNum")Integer pageNum,@PathVariable("pageSize")Integer pageSize){
        return consultService.getConsultList(pageNum,pageSize);
    }

//    @RequestMapping(value = "/runerr")
//    public String runError(Model model) {
//        System.out.println("runError .......");
//
//        String msg = null;
//        if(msg.length()>0)
//            System.out.println("hello world");
//
//        return "index";
//    }


}
